package swing;

import com.sun.awt.AWTUtilities;

import javax.swing.*;

/**
 * 窗口基类
 */
public abstract class BaseFrame extends JFrame {

    public BaseFrame() {
        super();
        initFrame();
        initAllComponent();
        addAllComponent();
    }

    /**
     * 初始化窗口和组件容器
     */
    protected abstract void initFrame();

    /**
     * 初始化所有组件
     */
    protected abstract void initAllComponent();

    /**
     * 将所有组件加入到窗口的组件容器中
     */
    protected abstract void addAllComponent();

    public void showFrame() {
        this.setVisible(true);
    }

    public void hideFrame() {
        this.setVisible(false);
    }

    protected void showMessageDialog(String message) {
        JOptionPane.showMessageDialog(this, message);
    }

    protected int showConfirmDialog(String dialogTitle, String message) {
        return JOptionPane.showConfirmDialog(this, message, dialogTitle, JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
    }

    /**
     * 隐藏窗体标题栏，在setVisible(true)前调用
     * 仅适用于处于非系统窗体标题栏的情况
     */
    public void hideTitleBar() {
        // set frame full transparent
        this.setUndecorated(true);
        AWTUtilities.setWindowOpaque(this, false);
        this.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
    }
}
